今天排序遇到了个问题,如果数据类型是 varchar 的数字,在排序的过程中,出来并不是我们想要的效果。
例如:
sql
select * from table order by field_varchar ;
field_varchar
0
1
11
100
2
22
3
33
在网上查找了一圈,比较常见的做法是:
sql
select * from table order by field_varchar+0;
转换为数字
field_varchar
0
1
2
3
11
22
33
100
点进来看的都是有求知欲的,所以对的,故事还没有完。
如果 这个字段里面有 空字符窜 或者 null。上面的方法还不够完美。
会出现下面的情况
field_varchar
0
空
1
2
3
11
22
33
100
因为空字符窜+0 是0, 0+0 也是0 ,这个时候就会出现不稳定的 0 和空 上下跳动的情况。
那么真正正确的姿态是怎么样的呢?
请看大屏幕
sql
select * from table order by length(field_varchar),field_varchar;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。